今天終於解決無法import的問題了!
最終發現是,在安裝slash command時他只有安裝info沒有他的本體,這就會導致無法import進來。會發現這個問題是因為我嘗試安裝前一版本的slash command(3.0.3)發現他是可以正常import的,只是因為版本過舊無法使用,而我在卸載時發現他跟新版的slash command(4.2.1)的差別是在3.0.3有一個本體,因此問題終於解決了。
後來差了許多資料才發現slash command應該過時了所以無法使用,現在新的slash command應該要用app_commands,下面是程式碼及註解
程式碼
from typing import Optional
import discord
from discord import app_commands
MY_GUILD = discord.Object(id=your guild id) # replace with your guild id
class MyClient(discord.Client):
def __init__(self, *, intents: discord.Intents):
super().__init__(intents=intents)
self.tree = app_commands.CommandTree(self)
#必須要有這段slash command才會出現在你的聊天室
#copy_global_to() 將全不命令複制到伺服器
#sync() 實際上將register發送到 Discord
async def setup_hook(self):
self.tree.copy_global_to(guild=MY_GUILD)
await self.tree.sync(guild=MY_GUILD)
intents = discord.Intents.default()
client = MyClient(intents=intents)
@client.event
async def on_ready():
print(f'Logged in as {client.user} (ID: {client.user.id})')
print('------')
#tree.command傳送訊息的方式要用interaction.response.send_message,async def hello():的括號中不能寫ctx要寫interaction
@client.tree.command()
async def hello(interaction: discord.Interaction):
"""Says hello!"""
await interaction.response.send_message(f'Hi, {interaction.user.mention}')
client.run(’token’)
執行結果